package com.xmg.design23.d22_mediator;

/**
 * 中介模式的设计思想跟中间层很像，通过引入中介这个中间层，将一组对象之间的交互关系（或者说依赖关系）从多对多（网状关系）
 * 转换为一对多（星状关系）。原来一个对象要跟n个对象交互，现在只需要跟一个中介对象交互，从而最小化对象之间的交互关系，
 * 降低了代码的复杂度，提高了代码的可读性和可维护性。
 *
 * 观察者模式和中介模式都是为了实现参与者之间的解耦，简化交互关系。
 * 两者的不同在于应用场景上。在观察者模式的应用场景中，参与者之间的交互比较有条理，一般都是单向的，一个参与者只有一个身份，
 * 要么是观察者，要么是被观察者。而在中介模式的应用场景中，参与者之间的交互关系错综复杂，
 * 既可以是消息的发送者、也可以同时是消息的接收者。
 *
 * @Author: mazhongqing
 * @Date: 2021/3/25 9:28
 */
public class Test {
    public static void main(String[] args) {
        Mediator md = new ConcreteMediator();
        Colleague c1, c2,c3;
        c1 = new ConcreteColleague1();
        c2 = new ConcreteColleague2();
        c3 = new ConcreteColleague3();
        md.register(c1);
        md.register(c2);
        md.register(c3);
        c1.send();
        System.out.println("-------------");
        c2.send();
    }
}
